﻿
namespace MVVMBasicRIALibrary.Web.DataModel
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    using System.Data.Objects.DataClasses;
    using System.Linq;
    using System.ServiceModel.DomainServices.Hosting;
    using System.ServiceModel.DomainServices.Server;


    // The MetadataTypeAttribute identifies AddressMetadata as the class
    // that carries additional metadata for the Address class.
    [MetadataTypeAttribute(typeof(Address.AddressMetadata))]
    public partial class Address
    {

        // This class allows you to attach custom attributes to properties
        // of the Address class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class AddressMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private AddressMetadata()
            {
            }

            public Dictionary Country { get; set; }

            public Nullable<int> CountryId { get; set; }

            public string FlatNo { get; set; }

            public string HouseNo { get; set; }

            public int Id { get; set; }

            public Nullable<DateTime> IDate { get; set; }

            public Nullable<int> IWho { get; set; }

            public string PostalCode { get; set; }

            public string PostOffice { get; set; }

            public Dictionary Region { get; set; }

            public Nullable<int> RegionId { get; set; }

            public string StreetName { get; set; }

            public Nullable<DateTime> UDate { get; set; }

            public Nullable<int> UWho { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies ContactMetadata as the class
    // that carries additional metadata for the Contact class.
    [MetadataTypeAttribute(typeof(Contact.ContactMetadata))]
    public partial class Contact
    {

        // This class allows you to attach custom attributes to properties
        // of the Contact class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class ContactMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private ContactMetadata()
            {
            }

            public string Description { get; set; }

            public string Email { get; set; }

            public string Fax { get; set; }

            public int Id { get; set; }

            public DateTime IDate { get; set; }

            public int IWho { get; set; }

            public string MobileNo { get; set; }

            public string PhoneNo { get; set; }

            public Nullable<DateTime> UDate { get; set; }

            public Nullable<int> UWho { get; set; }

            public string WebSite { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies DictionaryMetadata as the class
    // that carries additional metadata for the Dictionary class.
    [MetadataTypeAttribute(typeof(Dictionary.DictionaryMetadata))]
    public partial class Dictionary
    {

        // This class allows you to attach custom attributes to properties
        // of the Dictionary class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class DictionaryMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private DictionaryMetadata()
            {
            }

            public Nullable<int> CategoryId { get; set; }

            public string Description { get; set; }

            public int Id { get; set; }

            public DateTime IDate { get; set; }

            public int IWho { get; set; }

            public string Name { get; set; }

            public Nullable<int> ParentId { get; set; }

            public Nullable<DateTime> UDate { get; set; }

            public Nullable<int> UWho { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies EmployeeMetadata as the class
    // that carries additional metadata for the Employee class.
    [MetadataTypeAttribute(typeof(Employee.EmployeeMetadata))]
    public partial class Employee
    {

        // This class allows you to attach custom attributes to properties
        // of the Employee class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class EmployeeMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private EmployeeMetadata()
            {
            }

            public Address Address { get; set; }

            public int AddressId { get; set; }

            public Nullable<DateTime> BirthDate { get; set; }

            public Employee Boss { get; set; }

            public Nullable<int> ChiefId { get; set; }

            public Contact Contact { get; set; }

            public int ContactId { get; set; }

            public string Description { get; set; }

            public Dictionary Education { get; set; }

            public Nullable<int> EducationId { get; set; }

            public string FirstName { get; set; }

            public int Id { get; set; }

            public DateTime IDate { get; set; }

            public int IWho { get; set; }

            public string LastName { get; set; }

            public string PESEL { get; set; }

            public string PhotoPath { get; set; }

            public string Position { get; set; }

            public EntityCollection<Employee> Subordinates { get; set; }

            public Nullable<DateTime> UDate { get; set; }

            public Nullable<Guid> UserId { get; set; }

            public Nullable<int> UWho { get; set; }
        }
    }
}
